package com.share.service;

import com.share.common.enums.AccountTypeEnum;
import com.share.user.Gitee.GiteeUserInfo;
import com.share.user.Gitee.ProviderToken;
import com.share.user.weChat.dtos.TokenInfo;
import com.share.user.weChat.dtos.WxUserInfo;
import org.springframework.stereotype.Service;
import java.util.Map;

/**
 * 第三方登录统一服务接口
 */
@Service
public interface OAuthService {

    /**
     * 获取授权URL
     * @param authType 认证类型
     * @param params 参数
     * @return 授权URL
     */
    String getAuthorizationUrl(AccountTypeEnum authType, Map<String, String> params);

    /**
     * 获取访问令牌
     * @param authType 认证类型
     * @param code 授权码
     * @param params 其他参数
     * @return 访问令牌
     */
    String getAccessToken(AccountTypeEnum authType, String code, Map<String, String> params);

    /**
     * 获取用户信息
     * @param authType 认证类型
     * @param code code码
     * @return 用户信息
     */
    String thirdPartyLogin(AccountTypeEnum authType, String code);

    /**
     * 刷新访问令牌
     * @param authType 认证类型
     * @param refreshToken 刷新令牌
     * @param params 其他参数
     * @return 新的访问令牌
     */
    String refreshAccessToken(AccountTypeEnum authType, String refreshToken, Map<String, String> params);


    /**
     * 获取微信返回Token信息
     */
    TokenInfo getWxTokenInfo(String code, String appID, String appSecret);

    /**
     * 获取微信用户信息
     */
     WxUserInfo getWxUserInfo(TokenInfo tokenInfo);

    /**
     * 获取GiteeToken
     */
    Map getGiteeToken(ProviderToken providerToken);

    /**
     * 获取Gitee用户信息
     */
    GiteeUserInfo getGiteeUser(String accessToken);

}